package datos.gestores;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;


import datos.entidades.Chofer;
import excepciones.ObjetoNoExisteExcepcion;



public class GestorDatosChofer implements GestorDatos {

	private static int cantChoferes;
	private static List <Chofer> choferes;
	private File dataFile;
	
    public GestorDatosChofer () {
    	choferes = new ArrayList <Chofer>();
    	cantChoferes = 0;
    }

    public GestorDatosChofer (String filePath) {				 // Constructor de la clase.
		System.out.println(filePath);
		choferes = new ArrayList <Chofer>();
		setCantChoferes(0);
		this.dataFile = new File (filePath);
    }
    
    public void set (int idx, Object chofer) {
    	
    	choferes.set(idx, (Chofer) chofer);
    }

    public boolean remove (Object chofer) {
    	
    	boolean exito;
    	exito = choferes.remove((Chofer) chofer);
    	if (exito == true)
    		setCantChoferes(getCantChoferes()-1);
    	return exito;
    }
    
    public void remove (int idx) {
    	
    	choferes.remove(idx);
    	setCantChoferes(getCantChoferes()-1);
    }

    public Object get (int idx) {
    	
        Object chofer;
    	
        chofer = choferes.get(idx);
    	return chofer;
    }

    public boolean add (Object chofer) {
    	boolean exito;
    	
    	exito = choferes.add((Chofer) chofer);
    	if (exito == true)
    		setCantChoferes(getCantChoferes()+1);
    	
    	return exito;
    }

    public void listar () {
    	
        Iterator<Chofer> iter = choferes.iterator();
        
        while (iter.hasNext())
          System.out.println(iter.next());
        
    }

    public void loadData () throws IOException {	 // Carga en memoria la info contenida en el archivo de clientes.
        Scanner input = new Scanner (dataFile);
        cantChoferes = input.nextInt();
    	for (int i = 0 ; i < cantChoferes ; i++ ) {
			Chofer nuevoChofer = new Chofer();
			nuevoChofer.setIdChofer(input.nextInt());
			input.findInLine(PAT);
			while (!input.hasNext(PAT)) {
				nuevoChofer.addNombre(input.next());
			}
			input.findInLine(PAT);
			while (!input.hasNext(PAT)) {
				nuevoChofer.addApellido(input.next());
			}			
			input.findInLine(PAT);			
			choferes.add(nuevoChofer);
    	}
    }

    public void saveData () {
    }

    public int indexOf (Object chofer) throws ObjetoNoExisteExcepcion{
    	int idx;
    	
    	idx = choferes.indexOf((Chofer) chofer);
    	
        return idx;
    }

	public static void setCantChoferes(int cantChoferes) {
		GestorDatosChofer.cantChoferes = cantChoferes;
	}

	public int getCantChoferes() {
		return cantChoferes;
	}

	public static void setChoferes(List <Chofer> choferes) {
		GestorDatosChofer.choferes = choferes;
	}

	public static List <Chofer> getChoferes() {
		return choferes;
	}

}

